Lazy SETL Debugging with Persistent Data Structures
نویسنده
چکیده
To my parents and v Acknowledgments This is a good opportunity for me to thank the people who have contributed to the thesis. It is difficult to imagine that I could complete my research work without the contributions of these people. I am greatly indebted to my research advisor, Jack Schwartz. He has been my mentor and motivator since I started to work with him three years ago. His interest, insight, inspiration, enthusiasm and encouragement have long been part of the driving force of my research work. He has made detailed comments of this thesis, from wording to its overall structure. I would like to thank David Bacon. He was very kind in explaining to me the details of his SETL quadruples upon which my system is built, and answered many of my questions about and beyond the language. Most importantly, due to his passion to SETL, I have come to share his belief that SETL is a most wonderful programming language. I would like to thank many people who have commented or criticized my research and thesis. Ed Schonberg, who has encouraged and supported me during my stay at NYU, carefully examined my work and provided invaluable input. Bob Paige, another reader, suggested many improvements in a short period. Ken Perlin discussed with me many interface issues and served on my committees in various occasions. I would also like to Xiaonan Tan for their comments about my work. Finally, I would like to thank the support from my family over the difficult period of the last five years. This thesis is dedicated to them.
منابع مشابه
Debugging Haskell by Observing Intermediate Data Structures
Haskell has long needed a debugger. Although there has been much research into the topic of debugging lazy functional programs, no robust tool has yet come from the Haskell community that can help debug full Haskell until now. This paper describes a portable debugger for full Haskell, building only on commonly implemented extensions. It is based on the concept of observation of intermediate dat...
متن کاملAmortization, Lazy Evaluation, and Persistence: Lists with Catenation via Lazy Linking
Amortization has been underutilized in the design of persistent data structures, largely because traditional accounting schemes break down in a persistent setting. Such schemes depend on saving “credits” for future use, but a persistent data structure may have multiple “futures”, each competing for the same credits. We describe how lazy evaluation can often remedy this problem, yielding persist...
متن کاملDebugging Lazy Functional Programs by Asking the Oracle
The complexity of lazy evaluation forbids classic debugging techniques like a simple step-by-step representation of the buggy program run. Therefore, most sophisticated tools for searching bugs in lazy functional programs try to display the run as if the program’s underlying semantics was strict. In order to provide such a strict representation current approaches gather much information about t...
متن کاملObserving Functional Logic Computations
A lightweight approach to debugging functional logic programs by observations is presented, implemented for the language Curry. The Curry Object Observation System (COOSy) comprises a portable library plus a viewing tool. A programmer can observe data structures and functions by annotating expressions in his program. The possibly partial values of observed expressions that are computed during p...
متن کاملLink to record in
A lightweight approach to debugging functional logic programs by observations is presented, implemented for the language Curry. The Curry Object Observation System (COOSy) comprises a portable library plus a viewing tool. A programmer can observe data structures and functions by annotating expressions in his program. The possibly partial values of observed expressions that are computed during p...
متن کامل